# 列表
# 允许保存重复元素，元素有序保存
# 每个元素有一个对应的索引，索引从0开始
# 元素数据类型没有限制，列表大小(元素数量)可变
# 可以通过索引快速获取和赋值元素，适合快速查询和末尾添加，中间元素的删除和添加效率低
# 定义列表
# 列表名 = [元素1,元素2...]

list = [123, "abc", '你好', 123, True, 2 > 11]

# 获取指定元素  列表名[索引]
# list[0] = "xxxx"
print(list[0])
# len(列表)  获取列表中的元素数量
print(len(list))
# 索引[0,列表大小-1]
print(list[len(list) - 1])
# python中支持倒序获取元素  -1表示最后一个元素
print(list[-1])

# append(元素)    添加元素到列表末尾，直接操作原列表
list.append("sdfsdf")
# pop(index) 删除并返回index上的元素
# pop()    删除并返回最后一个元素
remove = list.pop()
print(remove)
# insert(索引,元素) 在指定索引处添加元素。直接操作原列表。添加会影响其他元素的位置，效率低
list.insert(100, "哈哈")
# remove(元素)    移除第一次出现的指定元素。直接操作原列表。如果不存在会报错
list.remove(123)

# extend(可迭代序列)  将可迭代序列中的元素添加到现有列表末尾，直接操作原列表。
list.extend([1, 22, 12, 3])

# 获取某个元素出现的次数  count(元素)   没有返回0
print(list.count('你xxx好'))
# 获取元素第一次出现的位置  如果不存在会报错
print(list.index('abc'))

# 排序时保证元素是同一种类型，通常是数值型。直接操作原列表。
# list.sort()  # 默认升序
# list.sort(reverse=True)  # 降序

# 清空列表
# list.clear()
print(list)

# 输入3个学生的5门成绩，输出每个学生成绩的最高分、平均分、每个学生的成绩降序排序
# 请输入第1个人的第1门成绩88，83，82，81，69
# 第一个人最高分：88 平均分：xx 分数列表：[88，83，82，81，69 ]
for n in range(3):
    score_list = []
    # 定义最大值,默认第一个最大
    # max = score_list[0]
    sum = 0
    for i in range(5):
        score = int(input(f"请输入第{n + 1}个同学的第{i + 1}门成绩"))
        score_list.append(score)
        sum += score
        # if score > max:
        #     max = score

    score_list.sort(reverse=True)
    print(
        f"同学[{n + 1}],最高分：{score_list[0]},最低分：{score_list[-1]}，平均分：{sum / len(score_list)},分数降序排序：{score_list}")


# 只读(元素不可改变)的列表,称为元组
# 定义：
# 元组名 = (元素1,元素2...)

tuple = (11, "xxx", 11, "你好", True)
# 所有关于操作元素的函数都不存在
print(tuple[0])
print(tuple[-1])

